package anjos.bean;

import anjos.dao.GenericDAO;
import anjos.modelo.Evento;
import anjos.modelo.Responsavel;
import anjos.rn.ResponsavelRN;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class ResponsavelBean {

   
    private Responsavel responsavel;
    private ResponsavelRN responsavelRN = new ResponsavelRN();
    private GenericDAO<Evento> dao = new GenericDAO<>();
    private List<Responsavel> responsaveis;
    private boolean renderLista;

    public String getTitulo() {
        iniciarBean();

        return "Cadastro - Responsáveis";
    }

    public void iniciarBean() {
        responsaveis = responsavelRN.obterTodos();
        setRenderLista(true);
    }

    public void novo() {
        if (responsavel == null) {
            responsavel = responsavelRN.novo();
        }
        setRenderLista(false);
    }

    public void voltar() {
        responsavel = null;
        setRenderLista(true);
    }

    public void salvar() {
        if (responsavelRN.salvar(responsavel)) {
            BeanUtil.criarMensagemDeInformacao("Responsavel Salvo", " O Responsavel: " + responsavel.getNome() + " Foi salvo na lista");
            return;
        }

        BeanUtil.criarMensagemDeErro("Erro ao tentar salvar o responsavel.", "");
    }

    public void excluir() {
        if (responsavelRN.remover(responsavel)) {
            BeanUtil.criarMensagemDeInformacao("Responsavel Removido da Lista", "O Responsavel: " + responsavel.getNome() + " foi removido da lista");
            return;
        }
        BeanUtil.criarMensagemDeErro("O Responsavel não pode ser excluido da Lista", "Erro ao excluir Responsavel");
    }
    
    public List<Responsavel> completeResponsavel(String digitacao) {
        
        if (digitacao.length() < 2) {
            return null;
        }

        digitacao = digitacao.trim();
        List<Responsavel> lista = dao.findByQueries("select o from Responsavel o "
                + "where o.nome like '%" + digitacao + "%' ", 20, 0);

        return lista;
    }

    
    
    
//    ***************************** Gets e Sets*********************************
    public ResponsavelBean() {
    }

    public Responsavel getResponsavel() {
        return responsavel;
    }

    public void setResponsavel(Responsavel responsavel) {
        this.responsavel = responsavel;
    }
    
    

    public ResponsavelRN getResponsavelRN() {
        return responsavelRN;
    }

    public void setResponsavelRN(ResponsavelRN responsavelRN) {
        this.responsavelRN = responsavelRN;
    }

    public List<Responsavel> getResponsaveis() {
        if (responsaveis == null) {
            responsaveis = responsavelRN.obterTodos();
        }
        return responsaveis;
    }

    public void setResponsaveis(List<Responsavel> responsavels) {
        this.responsaveis = responsavels;
    }

    /**
     * @return the renderLista
     */
    public boolean isRenderLista() {
        return renderLista;
    }

    /**
     * @param renderLista the renderLista to set
     */
    public void setRenderLista(boolean renderLista) {
        this.renderLista = renderLista;
    }
    
   
  
    
    
}
